﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Ucb.Workshop.Dal;
using System.Data.SqlClient;
using System.Data;

namespace Ucb.Workshop.Business
{
    /**
     * Clase que representa al usuario de sistema
     **/
    public class User
    {
        DBManager conexion = new DBManager();
        // Identificador de usuario
       public int _cod_user;
        public string _login;
        public string _password;
        public string _name;
        public string _Apellido;
        public string _telefhone;
        public string _address;
        public string _email;
        public int _codTipoUsuario;



        public int CodUser
        {
            get { return _cod_user; }
            set { _cod_user = value; }
        }
       
        public string Login
        {
            get { return _login; }
            set { _login = value; }
        }        

        public string Password
        {
            get { return _password; }
            set { _password = value; }
        }      

        public string Name
        {
            get { return _name; }
            set { _name = value; }
        } 

        public string Apellido
        {
            get { return _Apellido; }
            set { _Apellido = value; }
        }  
      
        public string Telephone
        {
            get { return _telefhone; }
            set { _telefhone = value; }
        }

        public string Address
        {
            get { return _address; }
            set { _address = value; }
        }

        public string Email
        {
            get { return _email; }
            set { _email = value; }
        }
        public int CodTipoUsuario
        {
            get { return _codTipoUsuario; }
            set { _codTipoUsuario = value; }
        }
        string _estado;

        public string Estado
        {
            get { return _estado; }
            set { _estado = value; }
        }



       
        // metodo para registrar a los usuarios
        public void Register()
        {
            string consulta = "INSERT INTO usuario( nombre, apellido, telefono, direccion, email,login, password, cod_tipo_usuario,estado) VALUES('" + this.Name + "','" + this.Apellido + "'," + this.Telephone + ",'" + this.Address + "','" + this.Email + "','" + this.Login + "','" + this.Password + "',2,'"+this.Estado+"')";
            conexion.EjecutarConsulta(consulta);
        }
        // Metodo que devuelve el usuario por su login y password
        public User GetUsuarioPorAutentificacion(string searchLogin, string searchPasssword)
        {
            string consulta = "SELECT * FROM usuario WHERE login = '" + searchLogin.ToUpper().Trim() + "' AND password = '" + searchPasssword.ToUpper().Trim() + "'";
            SqlDataReader valores = conexion.ExeConsulta(consulta);
            if (valores.HasRows)
            {
                User usuario = new User();
                while (valores.Read())
                {
                    usuario.CodUser = valores.GetInt32(0);
                    usuario.Login = valores.GetString(1).Trim();
                    usuario.Password = valores.GetString(2).Trim();
                    usuario.Name = valores.GetString(3).Trim();
                    usuario.Apellido = valores.GetString(4).Trim();
                    usuario.Telephone = valores.GetString(5).Trim();
                    usuario.Address = valores.GetString(6).Trim();
                    usuario.Email = valores.GetString(7);
                    usuario.CodTipoUsuario = valores.GetInt32(0);
                    //usuario.Estado = valores.GetString(9).Trim();
                }
                return usuario;
            }
            else
                return null;
        }
        public DataSet ListaDeUsuarios(int codigoUsuario)//SqlDataReader ListaDeUsuarios()
        {
            //SqlDataReader lista; 
            DataSet lista = new DataSet();
            //string consulta = string.Format("SELECT cod_usuario,nombre,apellido,telefono,direccion,email,login,password FROM usuario where cod_usuario={0}",codigoUsuario);
            string consulta = "SELECT cod_usuario,nombre,apellido,telefono,direccion,email,login,password,estado FROM usuario where cod_usuario=" + codigoUsuario + "";
            lista = conexion.ConsultaDataSet(consulta);
            return lista;

        }
        public void EliminarUsuario(int codigoUsuario)
        {
            string consulta;
            consulta = "DELETE FROM usuario WHERE usuario.cod_usuario='" + codigoUsuario + "';";
            conexion.EjecutarConsulta(consulta);
             

        }


        public void ModificarUsuario(User usuario)
        {
            string consulta = "UPDATE usuario SET nombre='" + usuario.Name + "',apellido='" + usuario.Apellido + "',telefono='" + usuario.Telephone + "',direccion='" + usuario.Address + "',email='" + usuario.Email + "',login='" + usuario.Login + "',password='" + usuario.Password + "',cod_tipo_usuario=2, estado='"+usuario.Estado+"' WHERE cod_usuario= " + usuario.CodUser+ "";
            conexion.EjecutarConsulta(consulta);
        }
        public DataSet ListaUsuariosOrdenada()//SqlDataReader ListaUsuariosOrdenada()
        {
            //SqlDataReader lista;
            DataSet lista = new DataSet();
            string consulta = "SELECT cod_usuario,nombre,apellido FROM usuario Order By cod_usuario asc";
            lista = conexion.ConsultaDataSet(consulta);
            return lista;
        }
    }
}
